#pragma once

#include "../../Libs/headers.default.h"
#include "../../Libs/headers.cv.h"
//#include "../../Libs/headers.ipfe.h"
//#include "../../Libs/headers.ipfe_tools.h"
//#include "../../Libs/headers.object_detection.h"

#include "ImageModel/headers.image_model.h"

using namespace	std;

//// CODE A

////if (1)
////{
////	CImageModelInstance IMI;
////	CImg<int> imgOutput;
////
////	IMI.InitObjectTemplate(GIMS.strFN_ImgTemplate, GIMS.IW, GIMS.IH, GIMS.CW, GIMS.CH);
////	IMI.InitModelParameters(GIMS.K1, GIMS.K2, GIMS.Sigma);
////
////	IMI.SetTransformation(CTransformation(0, 0));
////	IMI.SetFixation(CFixation(14, 7));
////
////	CDistribution dtrb_D;
////	IMI.Predict_D_given_T(dtrb_D);
////
////	CDistribution dtrb_I;
////	IMI.Predict_O_given_dtrbD_F(dtrb_I, dtrb_D);
////
////	CSimpleTypeArray<int> obsv_D;
////	CSimpleTypeArray<int> obsv_I;
////	IMI.RandomSample_D_given_T(obsv_D);
////	//IMI.RandomSample_R_given_obsvD_F(obsv_I, obsv_D);
////	IMI.RandomSample_R_given_T_F(obsv_I);
////
////	IMI.OutputObserveResultToImage(imgOutput, obsv_D, 20, 20);
////	CExternalTools::mySaveImage("obsv_D.jpg", imgOutput);
////	IMI.OutputObserveResultToImage(imgOutput, obsv_I, 20, 20);
////	CExternalTools::mySaveImage("obsv_I.jpg", imgOutput);
////
////	dtrb_D.OutputToImage(imgOutput, 20, 20);
////	CExternalTools::mySaveImage("D.jpg", imgOutput);
////	dtrb_I.OutputToImage(imgOutput, 20, 20);
////	CExternalTools::mySaveImage("I.jpg", imgOutput);
////}
